package com.gjintel.business.proj.service;

import java.util.Date;
import java.util.List;

import com.gjintel.business.proj.model.ProjectBidInfo;
import com.gjintel.business.proj.model.ProfessorInfo;
import com.gjintel.business.proj.model.ProjectInfo;
import com.gjintel.framework.user.model.User;
import com.gjintel.sdk.base.dao.Page;
import com.gjintel.sdk.base.dao.Sort;
import com.gjintel.sdk.base.service.IBaseService;

/**
 * @description 项目 
 * @author wwang 
 * @date 2016-8-16
 */
public interface IProjectInfoService extends IBaseService {

	/**
	 * @description 项目(保存，修改，提交) 
	 * @author wei 
	 * @date 2016-8-16
	 * @param user
	 * @param budgetMenuData
	 * @param project
	 * @param commitType
	 */
	public void saveProject(User user,String budgetMenuData,ProjectInfo project,int commitType);

	/**
	 * @description 根据ids 查询项目集合
	 * @author wei 
	 * @date 2016-8-16
	 * @param ids
	 * @param project
	 * @param page
	 * @param sort
	 * @param startTime
	 * @param stopTime
	 * @param bidStartTime
	 * @param bidStopTime
	 * @param startMoney
	 * @param endMoney
	 * @return
	 */
	public List<ProjectInfo> findAllByIds(String ids,ProjectInfo project, Page page, Sort sort, Date startTime,
			Date stopTime,Date bidStartTime, Date bidStopTime, Double startMoney, Double endMoney);
	
	/**
	 * @description 根据proj_id得到参加报价的数量
	 */
	public int getProjectBidderByProjId(String projId,boolean isEvalution);

	/***
	 * @description 根据proj_id，系统自动 进行评选中标用户保存到entity表中，并返回中标用户id（根据最低价中标，时间优先原则) 
	 * @author ruix
	 * @date 2016-8-23 下午04:52:02
	 * @param projId
	 * @return void
	 */
	public String saveTendeeByProjId(String projId);
	
	/***
	 * @description 根据proj_id，系统自动 进行评选中标用户保存到entity表中，并返回中标用户id（根据最低价中标，时间优先原则) 
	 * @author ruix
	 * @date 2016-8-23 下午04:52:02
	 * @param projId
	 * @return void
	 */
	public ProjectBidInfo getTendeeByProjId(String projId);

	
	/**
	 * @description 查询开标项目
	 * @author wwang 
	 * @date 2016-8-23
	 * @param project
	 * @param page
	 * @param sort
	 * @param startTime
	 * @param stopTime
	 * @param bidTime
	 * @param bidStopTime
	 */
	public List<ProjectInfo> findBiddList(ProjectInfo project, Page page, Sort sort,
			java.sql.Date startTime, java.sql.Date stopTime,
			java.sql.Date bidTime, java.sql.Date bidStopTime);

	/**
	 * @description 根据项目id,和投标人id查询投标信息 
	 * @author wwang 
	 * @date 2016-8-30
	 * @param projectId
	 * @param id
	 * @return
	 */
	public ProjectBidInfo getProjectBidderByProjIdAndBidderId(String projectId,
			String bidderId);

	
	/**
	 * @description 获取专家评标列表 
	 * @author wwang 
	 * @date 2016-8-31
	 * @param project
	 * @param page
	 * @param sort
	 * @param startTime
	 * @param stopTime
	 * @param bidTime
	 * @param bidStopTime
	 */
	public List<ProjectInfo> findProjectBiddList(ProjectInfo project, Page page, Sort sort,
			java.sql.Date startTime, java.sql.Date stopTime,
			java.sql.Date bidTime, java.sql.Date bidStopTime);

	
	/**
	 * @description 通过项目 id查询所有的报价信息
	 * @author wwang 
	 * @date 2016-8-31
	 * @param projectId
	 * @return
	 */
	public List<ProjectBidInfo> findProjectBidListByProjectId(Page page,ProjectBidInfo bidInfo);
	
	/**
	 * @description 生成编码 
	 * @author wwang 
	 * @date 2016-9-1
	 * @param project
	 * @return
	 */
	public String generateProjectCode(ProjectInfo project);
	
	/**
	 * @description 根据 流程id,得到项目的对象 
	 * @author ruixman: 42955429@qq.com
	 * @param processId: 流程id
	 */
	public ProjectInfo getProjectByProcessId(String processId);

	/**
	 * @description 是否投过标 
	 * @author wwang 
	 * @date 2016年9月19日
	 * @param id
	 * @param id2
	 * @return
	 */
	public boolean isBidByProjIdAndBidderId(String id, String id2);

	
	/**
	 * 查询中标之后的项目
	 * @param page
	 * @param pj
	 * @param status
	 * @return
	 */
	public List<ProjectInfo> findAllByStatus(Page page, ProjectInfo pj, String status);

	/**
	 * 获取不评标项目中标单位
	 * @param id
	 * @return
	 */
	public List<ProjectBidInfo> getProjectBiddersByProjId(String id);
	
	
}
